package com.xunkids.bos.migration.component.transmission.pojo;

import com.xunkids.bos.migration.dto.bos.entity.BosEventBaseDto;
import com.xunkids.bos.migration.dto.bos.entity.BosEventDto;

import java.io.Serializable;
import java.util.Optional;

/**
 * 传输消息
 *
 * @author xigexb
 * @version 1.0.0
 * @since 2022/8/26 16:51
 */
public interface TransportMessage<T> extends Serializable {

    /**
     * 请求/响应代码
     *
     * @return code
     */
    String code();

    /**
     * 消息ID
     *
     * @return id
     */
    String id();

    /**
     * 数据
     *
     * @return T data
     */
    Optional<BosEventBaseDto> data();

    /**
     * 主题
     *
     * @return 主题
     */
    String topic();

    /**
     * 请求状态
     * true 为请求
     * false 为响应
     *
     * @return true
     */
    boolean state();

}
